package com.tedu.api.thread;

/**
 * 创建线程---第三种方案：匿名内部类【推荐：创建1次】
 * Lambda表达式---JDK1.8推出新版本：简化匿名内部类写法
 * Lambda表达式也叫函数式表遍历！功能：简化匿名内部类
 *                               简化集合遍历功能
 *                               简化功能方法
 *                               简化IO流功能
 * Lambda表达式语法：()->{}，属于功能性接口！
 * () 代表
 * -> 代表
 * {} 代表输出值
 * 需求：创建接口 Insert 插排  提供：电
 *      子实现类 Computer 电脑
 *    子类实现接口--完成对象创建【创建1次】6
 *    匿名内部类方式完成对象创建
 *    Lambda表达式结构完成对象创建
 */
public class LambdaAPI {
    public static void main(String[] args) {
        //创建插排接口---必须使用子实现类
        //Insert i=new Computer();  //多态：造型
        //i.Dian();
        //子实现类---创建1次对象---匿名内部类：支持接口以及抽象类创建
//        Insert cp=new Insert() {
//            public String Dian(long money, char ch) {
//                return "电脑通电了";
//            }
//        };
//        cp.Dian(100,'2');
        //使用Lambda表达式   Insert cp=()->
        Insert cp=(money,ch)-> {return "电脑通电了";};
        cp.Dian(100,'2');
        System.out.println("电脑通电了");
        /** Lambda表达式---匿名内部类
         *() 代表 方法中参数，情况①：无参数，不可以删除
         *                 情况②：有参数，有1个参数,括号删除
         *                 情况③：有参数，有2个以上，不可以删除
         *-> 代表 new对象的过程
         * {} 代表 方法中的内容，情况
         *                ①：看方法返回值 void 空 传入输出语句，删除花括号
         *                ②：看方法返回值 Java数据类型 return Java数据类型；
         *                    【两种：八大基本类型|引用类型】
         *                                返回值存在 return 不可以删除【推荐】
         *               2.1返回值 不存在 return 可以删除【不推荐】
         *                ③：看方法返回值 返回值集合 不可以删除花括号
         */

    }
}
//创建插排---接口
interface Insert{
    public String Dian(long money,char ch);
}
//创建插排实现类---电脑类
//class Computer implements Insert{
//    public void Dian() {
//        System.out.println("电脑通电开机了");
//    }
//}
